#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "curvescene.h"

class QActionGroup;
class CurveScene;
class View;

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    void init();
    void initActions();
    void initConnections();
    void setScene(CurveScene *scene);
    CurveScene * getScene();

private slots:
    void modeChanged();
    void curveSelectionChanged();
    void finishedAddingCurve();
    void on_actionSelectionTool_toggled(bool arg1);
    void on_actionLoadImage_triggered();
    void on_colorChoosePushButton_pressed();
    void on_lineStyleCombo_currentIndexChanged(int index);
    void on_transparencySlider_valueChanged(int value);
    void on_actionHandTool_toggled(bool arg1);
    void on_actionExport_triggered();

    void on_actionAddBezier_toggled(bool arg1);
    void on_actionAddBSpline_toggled(bool arg1);
    void on_actionAddNCS_toggled(bool arg1);
    void on_actionAddNURBS_toggled(bool arg1);
    void on_actionAddBezierSpline_toggled(bool arg1);
    void on_actionRationalBezier_toggled(bool arg1);

    void on_actionRotate_toggled(bool arg1);
    void on_actionMove_toggled(bool arg1);
    void on_actionScale_toggled(bool arg1);

private:
    Ui::MainWindow *ui;
    QActionGroup *modeActions;
    QActionGroup *actionGroupMicro;
    QActionGroup *actionGroupMacro;
    QActionGroup *actionGroupTools;

    CurveScene *m_scene;
    View *m_view;
};

#endif // MAINWINDOW_H
